using System;
using MicrosoftResearch.Infer;
using MicrosoftResearch.Infer.Distributions;
using MicrosoftResearch.Infer.Collections;
using MicrosoftResearch.Infer.Factors;

namespace MicrosoftResearch.Infer.Models.User
{
	/// <summary>
	/// Class for performing inference in model 'Model' using algorithm 'ExpectationPropagation'.
	/// </summary>
	/// <remarks>
	/// The easiest way to use this class is to wrap an instance in a CompiledAlgorithm object and use
	/// the methods on CompiledAlgorithm to set parameters and execute inference.
	/// 
	/// If you instead wish to use this class directly, you must perform the following steps:
	/// 1) Create an instance of the class
	/// 2) Set the value of any externally-set fields e.g. data, priors
	/// 3) Call the Reset() method
	/// 4) Call the Initialise() method once
	/// 5) Call the Update() method multiple times  - each call performs one iteration of inference
	/// 6) Use the XXXMarginal() methods to retrieve posterior marginals for different variables.
	/// 
	/// Generated by Infer.NET 2.3 beta 4 at 19:26 on 29 May 2010.
	/// </remarks>
	public class Model18_EP : IIterativeProcess
	{
		#region Fields
		// Messages from uses of 'vbool59'
		public Bernoulli[] vbool59_uses_B;
		// The constant 'vBernoulli67'
		public Bernoulli vBernoulli67;
		// Message from definition of 'vbool59'
		public Bernoulli vbool59_F;
		// Messages from uses of 'vbool51'
		public Bernoulli[] vbool51_uses_B;
		// The constant 'vBernoulli59'
		public Bernoulli vBernoulli59;
		// Message from definition of 'vbool51'
		public Bernoulli vbool51_F;
		// Messages from uses of 'vbool305'
		public Bernoulli[] vbool305_uses_B;
		// Message from definition of 'vbool305'
		public Bernoulli vbool305_F;
		// Messages from uses of 'vbool77'
		public Bernoulli[] vbool77_uses_B;
		// The constant 'vBernoulli85'
		public Bernoulli vBernoulli85;
		// Message from definition of 'vbool77'
		public Bernoulli vbool77_F;
		// Messages from uses of 'vbool313'
		public Bernoulli[] vbool313_uses_B;
		// Message from definition of 'vbool313'
		public Bernoulli vbool313_F;
		// Messages from uses of 'vbool129'
		public Bernoulli[] vbool129_uses_B;
		// The constant 'vBernoulli137'
		public Bernoulli vBernoulli137;
		// Message from definition of 'vbool129'
		public Bernoulli vbool129_F;
		// Messages from uses of 'vbool321'
		public Bernoulli[] vbool321_uses_B;
		// Message from definition of 'vbool321'
		public Bernoulli vbool321_F;
		// Messages from uses of 'vbool7'
		public Bernoulli[] vbool7_uses_B;
		// The constant 'vBernoulli15'
		public Bernoulli vBernoulli15;
		// Message from definition of 'vbool7'
		public Bernoulli vbool7_F;
		// Messages from uses of 'vbool289'
		public Bernoulli[] vbool289_uses_B;
		// Message from definition of 'vbool289'
		public Bernoulli vbool289_F;
		// Messages from uses of 'vbool85'
		public Bernoulli[] vbool85_uses_B;
		// The constant 'vBernoulli93'
		public Bernoulli vBernoulli93;
		// Message from definition of 'vbool85'
		public Bernoulli vbool85_F;
		// Messages from uses of 'vbool329'
		public Bernoulli[] vbool329_uses_B;
		// Message from definition of 'vbool329'
		public Bernoulli vbool329_F;
		// Messages from uses of 'vbool137'
		public Bernoulli[] vbool137_uses_B;
		// The constant 'vBernoulli145'
		public Bernoulli vBernoulli145;
		// Message from definition of 'vbool137'
		public Bernoulli vbool137_F;
		// Messages from uses of 'vbool353'
		public Bernoulli[] vbool353_uses_B;
		// Message from definition of 'vbool353'
		public Bernoulli vbool353_F;
		// Messages from uses of 'vbool150'
		public Bernoulli[] vbool150_uses_B;
		// The constant 'vBernoulli158'
		public Bernoulli vBernoulli158;
		// Message from definition of 'vbool150'
		public Bernoulli vbool150_F;
		// Messages from uses of 'vbool460'
		public Bernoulli[] vbool460_uses_B;
		// Message from definition of 'vbool460'
		public Bernoulli vbool460_F;
		// Messages from uses of 'vbool121'
		public Bernoulli[] vbool121_uses_B;
		// The constant 'vBernoulli129'
		public Bernoulli vBernoulli129;
		// Message from definition of 'vbool121'
		public Bernoulli vbool121_F;
		// Messages from uses of 'vbool345'
		public Bernoulli[] vbool345_uses_B;
		// Message from definition of 'vbool345'
		public Bernoulli vbool345_F;
		// Messages from uses of 'vbool25'
		public Bernoulli[] vbool25_uses_B;
		// The constant 'vBernoulli33'
		public Bernoulli vBernoulli33;
		// Message from definition of 'vbool25'
		public Bernoulli vbool25_F;
		// Messages from uses of 'vbool361'
		public Bernoulli[] vbool361_uses_B;
		// Message from definition of 'vbool361'
		public Bernoulli vbool361_F;
		// Messages from uses of 'vbool168'
		public Bernoulli[] vbool168_uses_B;
		// The constant 'vBernoulli176'
		public Bernoulli vBernoulli176;
		// Message from definition of 'vbool168'
		public Bernoulli vbool168_F;
		// Messages from uses of 'vbool426'
		public Bernoulli[] vbool426_uses_B;
		// Message from definition of 'vbool426'
		public Bernoulli vbool426_F;
		// Messages from uses of 'vbool98'
		public Bernoulli[] vbool98_uses_B;
		// The constant 'vBernoulli106'
		public Bernoulli vBernoulli106;
		// Message from definition of 'vbool98'
		public Bernoulli vbool98_F;
		// Messages from uses of 'vbool337'
		public Bernoulli[] vbool337_uses_B;
		// Message from definition of 'vbool337'
		public Bernoulli vbool337_F;
		// Messages from uses of 'vbool33'
		public Bernoulli[] vbool33_uses_B;
		// The constant 'vBernoulli41'
		public Bernoulli vBernoulli41;
		// Message from definition of 'vbool33'
		public Bernoulli vbool33_F;
		// Messages from uses of 'vbool297'
		public Bernoulli[] vbool297_uses_B;
		// Message from definition of 'vbool297'
		public Bernoulli vbool297_F;
		// Messages from uses of 'vbool176'
		public Bernoulli[] vbool176_uses_B;
		// The constant 'vBernoulli184'
		public Bernoulli vBernoulli184;
		// Message from definition of 'vbool176'
		public Bernoulli vbool176_F;
		// Messages from uses of 'vbool434'
		public Bernoulli[] vbool434_uses_B;
		// Message from definition of 'vbool434'
		public Bernoulli vbool434_F;
		// Messages from uses of 'vbool459'
		public Bernoulli[] vbool459_uses_B;
		// Message from definition of 'vbool459'
		public Bernoulli vbool459_F;
		// Message to definition of 'vbool305'
		public Bernoulli vbool305_B;
		// Messages to uses of 'vbool51'
		public Bernoulli[] vbool51_uses_F;
		// Message to definition of 'vbool313'
		public Bernoulli vbool313_B;
		// Messages to uses of 'vbool77'
		public Bernoulli[] vbool77_uses_F;
		// Message to definition of 'vbool321'
		public Bernoulli vbool321_B;
		// Messages to uses of 'vbool129'
		public Bernoulli[] vbool129_uses_F;
		// Messages to uses of 'vbool59'
		public Bernoulli[] vbool59_uses_F;
		// Message to definition of 'vbool289'
		public Bernoulli vbool289_B;
		// Messages to uses of 'vbool7'
		public Bernoulli[] vbool7_uses_F;
		// The constant 'vBernoulli5'
		public Bernoulli vBernoulli5;
		// Message to definition of 'vbool329'
		public Bernoulli vbool329_B;
		// Messages to uses of 'vbool85'
		public Bernoulli[] vbool85_uses_F;
		// Message to definition of 'vbool353'
		public Bernoulli vbool353_B;
		// Messages to uses of 'vbool137'
		public Bernoulli[] vbool137_uses_F;
		// Message to definition of 'vbool460'
		public Bernoulli vbool460_B;
		// Messages to uses of 'vbool150'
		public Bernoulli[] vbool150_uses_F;
		// Message to definition of 'vbool345'
		public Bernoulli vbool345_B;
		// Messages to uses of 'vbool121'
		public Bernoulli[] vbool121_uses_F;
		// Message to definition of 'vbool361'
		public Bernoulli vbool361_B;
		// Messages to uses of 'vbool25'
		public Bernoulli[] vbool25_uses_F;
		// Message to definition of 'vbool426'
		public Bernoulli vbool426_B;
		// Messages to uses of 'vbool168'
		public Bernoulli[] vbool168_uses_F;
		// The constant 'vBernoulli6'
		public Bernoulli vBernoulli6;
		// Message to definition of 'vbool337'
		public Bernoulli vbool337_B;
		// Messages to uses of 'vbool98'
		public Bernoulli[] vbool98_uses_F;
		// Message to definition of 'vbool297'
		public Bernoulli vbool297_B;
		// Messages to uses of 'vbool33'
		public Bernoulli[] vbool33_uses_F;
		// Message to definition of 'vbool434'
		public Bernoulli vbool434_B;
		// Messages to uses of 'vbool176'
		public Bernoulli[] vbool176_uses_F;
		// Message to definition of 'vbool459'
		public Bernoulli vbool459_B;
		// Message to marginal of 'vbool305'
		public Bernoulli vbool305_marginal_B;
		// Message to marginal of 'vbool313'
		public Bernoulli vbool313_marginal_B;
		// Message to marginal of 'vbool321'
		public Bernoulli vbool321_marginal_B;
		// Message to marginal of 'vbool289'
		public Bernoulli vbool289_marginal_B;
		// Message to marginal of 'vbool329'
		public Bernoulli vbool329_marginal_B;
		// Message to marginal of 'vbool353'
		public Bernoulli vbool353_marginal_B;
		// Message to marginal of 'vbool460'
		public Bernoulli vbool460_marginal_B;
		// Message to marginal of 'vbool345'
		public Bernoulli vbool345_marginal_B;
		// Message to marginal of 'vbool361'
		public Bernoulli vbool361_marginal_B;
		// Message to marginal of 'vbool426'
		public Bernoulli vbool426_marginal_B;
		// Message to marginal of 'vbool337'
		public Bernoulli vbool337_marginal_B;
		// Message to marginal of 'vbool297'
		public Bernoulli vbool297_marginal_B;
		// Message to marginal of 'vbool434'
		public Bernoulli vbool434_marginal_B;
		// Message to marginal of 'vbool459'
		public Bernoulli vbool459_marginal_B;
		// Message to marginal of 'vbool59'
		public Bernoulli vbool59_marginal_B;
		// Message to marginal of 'vbool51'
		public Bernoulli vbool51_marginal_B;
		// Message to marginal of 'vbool77'
		public Bernoulli vbool77_marginal_B;
		// Message to marginal of 'vbool129'
		public Bernoulli vbool129_marginal_B;
		// Message to marginal of 'vbool7'
		public Bernoulli vbool7_marginal_B;
		// Message to marginal of 'vbool85'
		public Bernoulli vbool85_marginal_B;
		// Message to marginal of 'vbool137'
		public Bernoulli vbool137_marginal_B;
		// Message to marginal of 'vbool150'
		public Bernoulli vbool150_marginal_B;
		// Message to marginal of 'vbool121'
		public Bernoulli vbool121_marginal_B;
		// Message to marginal of 'vbool25'
		public Bernoulli vbool25_marginal_B;
		// Message to marginal of 'vbool168'
		public Bernoulli vbool168_marginal_B;
		// Message to marginal of 'vbool98'
		public Bernoulli vbool98_marginal_B;
		// Message to marginal of 'vbool33'
		public Bernoulli vbool33_marginal_B;
		// Message to marginal of 'vbool176'
		public Bernoulli vbool176_marginal_B;
		#endregion

		#region Methods
		/// <summary>
		/// Configures constant values that will not change during the lifetime of the class.
		/// </summary>
		/// <remarks>
		/// This method should be called once only after the class is instantiated.  In future, it will likely become
		/// the class constructor.
		/// </remarks>
		public void Reset()
		{
			// Create array for 'vbool59_uses' backwards messages.
			this.vbool59_uses_B = new Bernoulli[3];
			this.vBernoulli67 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool59_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli67);
			}
			this.vbool59_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli67);
			// Message to 'vbool59' from Random factor
			this.vbool59_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli67);
			// Create array for 'vbool51_uses' backwards messages.
			this.vbool51_uses_B = new Bernoulli[2];
			this.vBernoulli59 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool51_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli59);
			}
			this.vbool51_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli59);
			// Message to 'vbool51' from Random factor
			this.vbool51_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli59);
			// Create array for 'vbool305_uses' backwards messages.
			this.vbool305_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool305_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool305_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool77_uses' backwards messages.
			this.vbool77_uses_B = new Bernoulli[2];
			this.vBernoulli85 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool77_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli85);
			}
			this.vbool77_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli85);
			// Message to 'vbool77' from Random factor
			this.vbool77_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli85);
			// Create array for 'vbool313_uses' backwards messages.
			this.vbool313_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool313_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool313_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool129_uses' backwards messages.
			this.vbool129_uses_B = new Bernoulli[2];
			this.vBernoulli137 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool129_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli137);
			}
			this.vbool129_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli137);
			// Message to 'vbool129' from Random factor
			this.vbool129_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli137);
			// Create array for 'vbool321_uses' backwards messages.
			this.vbool321_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool321_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool321_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool7_uses' backwards messages.
			this.vbool7_uses_B = new Bernoulli[1];
			this.vBernoulli15 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool7_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli15);
			}
			this.vbool7_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli15);
			// Message to 'vbool7' from Random factor
			this.vbool7_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli15);
			// Create array for 'vbool289_uses' backwards messages.
			this.vbool289_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool289_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool289_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool85_uses' backwards messages.
			this.vbool85_uses_B = new Bernoulli[2];
			this.vBernoulli93 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool85_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli93);
			}
			this.vbool85_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli93);
			// Message to 'vbool85' from Random factor
			this.vbool85_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli93);
			// Create array for 'vbool329_uses' backwards messages.
			this.vbool329_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool329_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool329_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool137_uses' backwards messages.
			this.vbool137_uses_B = new Bernoulli[3];
			this.vBernoulli145 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool137_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli145);
			}
			this.vbool137_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli145);
			// Message to 'vbool137' from Random factor
			this.vbool137_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli145);
			// Create array for 'vbool353_uses' backwards messages.
			this.vbool353_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool353_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool353_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool150_uses' backwards messages.
			this.vbool150_uses_B = new Bernoulli[2];
			this.vBernoulli158 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool150_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli158);
			}
			this.vbool150_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli158);
			// Message to 'vbool150' from Random factor
			this.vbool150_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli158);
			// Create array for 'vbool460_uses' backwards messages.
			this.vbool460_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool460_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool460_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool121_uses' backwards messages.
			this.vbool121_uses_B = new Bernoulli[2];
			this.vBernoulli129 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool121_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli129);
			}
			this.vbool121_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli129);
			// Message to 'vbool121' from Random factor
			this.vbool121_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli129);
			// Create array for 'vbool345_uses' backwards messages.
			this.vbool345_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool345_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool345_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool25_uses' backwards messages.
			this.vbool25_uses_B = new Bernoulli[2];
			this.vBernoulli33 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool25_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli33);
			}
			this.vbool25_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli33);
			// Message to 'vbool25' from Random factor
			this.vbool25_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli33);
			// Create array for 'vbool361_uses' backwards messages.
			this.vbool361_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool361_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool361_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool168_uses' backwards messages.
			this.vbool168_uses_B = new Bernoulli[2];
			this.vBernoulli176 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool168_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli176);
			}
			this.vbool168_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli176);
			// Message to 'vbool168' from Random factor
			this.vbool168_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli176);
			// Create array for 'vbool426_uses' backwards messages.
			this.vbool426_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool426_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool426_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool98_uses' backwards messages.
			this.vbool98_uses_B = new Bernoulli[2];
			this.vBernoulli106 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool98_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli106);
			}
			this.vbool98_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli106);
			// Message to 'vbool98' from Random factor
			this.vbool98_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli106);
			// Create array for 'vbool337_uses' backwards messages.
			this.vbool337_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool337_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool337_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool33_uses' backwards messages.
			this.vbool33_uses_B = new Bernoulli[1];
			this.vBernoulli41 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool33_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli41);
			}
			this.vbool33_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli41);
			// Message to 'vbool33' from Random factor
			this.vbool33_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli41);
			// Create array for 'vbool297_uses' backwards messages.
			this.vbool297_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool297_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool297_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool176_uses' backwards messages.
			this.vbool176_uses_B = new Bernoulli[2];
			this.vBernoulli184 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool176_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli184);
			}
			this.vbool176_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli184);
			// Message to 'vbool176' from Random factor
			this.vbool176_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli184);
			// Create array for 'vbool434_uses' backwards messages.
			this.vbool434_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool434_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool434_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool459_uses' backwards messages.
			this.vbool459_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool459_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool459_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool305_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool51_uses' forwards messages.
			this.vbool51_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool51_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli59);
			}
			this.vbool313_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool77_uses' forwards messages.
			this.vbool77_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool77_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli85);
			}
			this.vbool321_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool129_uses' forwards messages.
			this.vbool129_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool129_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli137);
			}
			// Create array for 'vbool59_uses' forwards messages.
			this.vbool59_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool59_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli67);
			}
			this.vbool289_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool7_uses' forwards messages.
			this.vbool7_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool7_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli15);
			}
			// Message to 'vbool7_uses' from UsesEqualDef factor
			this.vbool7_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool7_uses_B, this.vbool7_F, 0, this.vbool7_uses_F[0]);
			this.vBernoulli5 = new Bernoulli(0.9);
			// Message to 'vbool305_uses' from EqualRandom factor
			this.vbool305_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool313_uses' from EqualRandom factor
			this.vbool313_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool321_uses' from EqualRandom factor
			this.vbool321_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool289_uses' from EqualRandom factor
			this.vbool289_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool329_uses' from EqualRandom factor
			this.vbool329_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool353_uses' from EqualRandom factor
			this.vbool353_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool345_uses' from EqualRandom factor
			this.vbool345_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool361_uses' from EqualRandom factor
			this.vbool361_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool426_uses' from EqualRandom factor
			this.vbool426_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool337_uses' from EqualRandom factor
			this.vbool337_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool297_uses' from EqualRandom factor
			this.vbool297_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool434_uses' from EqualRandom factor
			this.vbool434_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool305' from ReplicateWithMarginal factor
			this.vbool305_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool305_uses_B, this.vbool305_B);
			// Message to 'vbool313' from ReplicateWithMarginal factor
			this.vbool313_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool313_uses_B, this.vbool313_B);
			// Message to 'vbool321' from ReplicateWithMarginal factor
			this.vbool321_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool321_uses_B, this.vbool321_B);
			// Message to 'vbool289' from ReplicateWithMarginal factor
			this.vbool289_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool289_uses_B, this.vbool289_B);
			// Message to 'vbool51_uses' from AreEqual factor
			this.vbool51_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool289_B, this.vbool7_uses_F[0]);
			// Message to 'vbool51_uses' from UsesEqualDef factor
			this.vbool51_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool51_uses_B, this.vbool51_F, 0, this.vbool51_uses_F[0]);
			// Message to 'vbool59_uses' from AreEqual factor
			this.vbool59_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool305_B, this.vbool51_uses_F[0]);
			this.vbool329_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool329' from ReplicateWithMarginal factor
			this.vbool329_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool329_uses_B, this.vbool329_B);
			// Create array for 'vbool85_uses' forwards messages.
			this.vbool85_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool85_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli93);
			}
			this.vbool353_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool353' from ReplicateWithMarginal factor
			this.vbool353_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool353_uses_B, this.vbool353_B);
			// Create array for 'vbool137_uses' forwards messages.
			this.vbool137_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool137_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli145);
			}
			this.vbool460_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool150_uses' forwards messages.
			this.vbool150_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool150_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli158);
			}
			this.vbool345_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool345' from ReplicateWithMarginal factor
			this.vbool345_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool345_uses_B, this.vbool345_B);
			// Create array for 'vbool121_uses' forwards messages.
			this.vbool121_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool121_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli129);
			}
			this.vbool361_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool361' from ReplicateWithMarginal factor
			this.vbool361_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool361_uses_B, this.vbool361_B);
			// Create array for 'vbool25_uses' forwards messages.
			this.vbool25_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool25_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli33);
			}
			this.vbool426_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool426' from ReplicateWithMarginal factor
			this.vbool426_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool426_uses_B, this.vbool426_B);
			// Create array for 'vbool168_uses' forwards messages.
			this.vbool168_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool168_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli176);
			}
			this.vBernoulli6 = new Bernoulli(0.9);
			// Message to 'vbool460_uses' from EqualRandom factor
			this.vbool460_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool459_uses' from EqualRandom factor
			this.vbool459_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool460' from ReplicateWithMarginal factor
			this.vbool460_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool460_uses_B, this.vbool460_B);
			this.vbool337_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool337' from ReplicateWithMarginal factor
			this.vbool337_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool337_uses_B, this.vbool337_B);
			// Create array for 'vbool98_uses' forwards messages.
			this.vbool98_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool98_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli106);
			}
			this.vbool297_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool297' from ReplicateWithMarginal factor
			this.vbool297_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool297_uses_B, this.vbool297_B);
			// Create array for 'vbool33_uses' forwards messages.
			this.vbool33_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool33_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli41);
			}
			// Message to 'vbool33_uses' from UsesEqualDef factor
			this.vbool33_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool33_uses_B, this.vbool33_F, 0, this.vbool33_uses_F[0]);
			// Message to 'vbool25_uses' from AreEqual factor
			this.vbool25_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool297_B, this.vbool33_uses_F[0]);
			// Message to 'vbool25_uses' from UsesEqualDef factor
			this.vbool25_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool25_uses_B, this.vbool25_F, 0, this.vbool25_uses_F[0]);
			// Message to 'vbool137_uses' from AreEqual factor
			this.vbool137_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool361_B, this.vbool25_uses_F[0]);
			this.vbool434_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool434' from ReplicateWithMarginal factor
			this.vbool434_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool434_uses_B, this.vbool434_B);
			// Create array for 'vbool176_uses' forwards messages.
			this.vbool176_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool176_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli184);
			}
			this.vbool459_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool459' from ReplicateWithMarginal factor
			this.vbool459_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool459_uses_B, this.vbool459_B);
		}

		/// <summary>
		/// Creates message arrays and initialises their values ready for inference to be performed.
		/// </summary>
		/// <remarks>
		/// This method should be called once each time inference is performed. Since the initialisation
		/// procedure normally dependson external values such as priors and array sizes, all external
		/// values must be set before calling this method.
		/// 
		/// As well as initialising message arrays, this method also performs any message passing that
		/// the scheduler determines need only be carried out once.
		/// </remarks>
		public void Initialise()
		{
			this.vbool305_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool313_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool321_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool289_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool329_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool353_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool460_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool345_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool361_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool426_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool337_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool297_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool434_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool459_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool59_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli67);
			this.vbool51_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli59);
			this.vbool77_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli85);
			this.vbool129_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli137);
			this.vbool7_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli15);
			this.vbool85_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli93);
			this.vbool137_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli145);
			this.vbool150_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli158);
			this.vbool121_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli129);
			this.vbool25_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli33);
			this.vbool168_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli176);
			this.vbool98_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli106);
			this.vbool33_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli41);
			this.vbool176_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli184);
		}

		/// <summary>
		/// Performs one iteration of inference.
		/// </summary>
		/// <remarks>
		/// This method should be called multiple times, after calling Initialise(), in order to perform
		/// multiple iterations of message passing.  You can call methods to retrieve posterior marginals
		/// at any time - the returned marginal will be the estimated marginal given the current state of
		/// the message passing algorithm.  This can be useful for monitoring convergence of the algorithm.
		/// 
		/// Where the scheduler has determined inference can be performed without iteration, this method
		/// does nothing.
		/// </remarks>
		public void Update()
		{
			// Message to 'vbool59_uses' from UsesEqualDef factor
			this.vbool59_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool59_uses_B, this.vbool59_F, 1, this.vbool59_uses_F[1]);
			// Message to 'vbool77_uses' from AreEqual factor
			this.vbool77_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool313_B, this.vbool59_uses_F[1]);
			// Message to 'vbool77_uses' from UsesEqualDef factor
			this.vbool77_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool77_uses_B, this.vbool77_F, 1, this.vbool77_uses_F[1]);
			// Message to 'vbool85_uses' from AreEqual factor
			this.vbool85_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool329_B, this.vbool77_uses_F[1]);
			// Message to 'vbool85_uses' from UsesEqualDef factor
			this.vbool85_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool85_uses_B, this.vbool85_F, 1, this.vbool85_uses_F[1]);
			// Message to 'vbool150_uses' from AreEqual factor
			this.vbool150_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool460_B, this.vbool85_uses_F[1]);
			// Message to 'vbool150_uses' from UsesEqualDef factor
			this.vbool150_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool150_uses_B, this.vbool150_F, 1, this.vbool150_uses_F[1]);
			// Message to 'vbool168_uses' from AreEqual factor
			this.vbool168_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool426_B, this.vbool150_uses_F[1]);
			// Message to 'vbool168_uses' from UsesEqualDef factor
			this.vbool168_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool168_uses_B, this.vbool168_F, 1, this.vbool168_uses_F[1]);
			// Message to 'vbool176_uses' from AreEqual factor
			this.vbool176_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool434_B, this.vbool168_uses_F[1]);
			// Message to 'vbool176_uses' from UsesEqualDef factor
			this.vbool176_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool176_uses_B, this.vbool176_F, 1, this.vbool176_uses_F[1]);
			// Message to 'vbool98_uses' from AreEqual factor
			this.vbool98_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool459_B, this.vbool176_uses_F[1]);
			// Message to 'vbool98_uses' from UsesEqualDef factor
			this.vbool98_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool98_uses_B, this.vbool98_F, 0, this.vbool98_uses_F[0]);
			// Message to 'vbool121_uses' from AreEqual factor
			this.vbool121_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool337_B, this.vbool98_uses_F[0]);
			// Message to 'vbool121_uses' from UsesEqualDef factor
			this.vbool121_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool121_uses_B, this.vbool121_F, 0, this.vbool121_uses_F[0]);
			// Message to 'vbool137_uses' from AreEqual factor
			this.vbool137_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool345_B, this.vbool121_uses_F[0]);
			// Message to 'vbool137_uses' from UsesEqualDef factor
			this.vbool137_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool137_uses_B, this.vbool137_F, 0, this.vbool137_uses_F[0]);
			// Message to 'vbool129_uses' from AreEqual factor
			this.vbool129_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool353_B, this.vbool137_uses_F[0]);
			// Message to 'vbool129_uses' from UsesEqualDef factor
			this.vbool129_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool129_uses_B, this.vbool129_F, 0, this.vbool129_uses_F[0]);
			// Message to 'vbool59_uses' from AreEqual factor
			this.vbool59_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool321_B, this.vbool129_uses_F[0]);
			// Message to 'vbool59_uses' from UsesEqualDef factor
			this.vbool59_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool59_uses_B, this.vbool59_F, 0, this.vbool59_uses_F[0]);
			// Message to 'vbool51_uses' from AreEqual factor
			this.vbool51_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool305_B, this.vbool59_uses_F[0]);
			// Message to 'vbool51_marginal' from UsesEqualDef factor
			this.vbool51_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool51_uses_B, this.vbool51_F, this.vbool51_marginal_B);
			// Message to 'vbool305' from AreEqual factor
			this.vbool305_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool59_uses_F[0], this.vbool51_uses_F[0]);
			// Message to 'vbool305_marginal' from ReplicateWithMarginal factor
			this.vbool305_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool305_uses_B, this.vbool305_F, this.vbool305_marginal_B);
			// Message to 'vbool51_uses' from UsesEqualDef factor
			this.vbool51_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool51_uses_B, this.vbool51_F, 1, this.vbool51_uses_F[1]);
			// Message to 'vbool7_uses' from AreEqual factor
			this.vbool7_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool289_B, this.vbool51_uses_F[1]);
			// Message to 'vbool7_marginal' from UsesEqualDef factor
			this.vbool7_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool7_uses_B, this.vbool7_F, this.vbool7_marginal_B);
			// Message to 'vbool289' from AreEqual factor
			this.vbool289_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool7_uses_F[0], this.vbool51_uses_F[1]);
			// Message to 'vbool289_marginal' from ReplicateWithMarginal factor
			this.vbool289_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool289_uses_B, this.vbool289_F, this.vbool289_marginal_B);
			// Message to 'vbool59_uses' from UsesEqualDef factor
			this.vbool59_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool59_uses_B, this.vbool59_F, 2, this.vbool59_uses_F[2]);
			// Message to 'vbool129_uses' from AreEqual factor
			this.vbool129_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool321_B, this.vbool59_uses_F[2]);
			// Message to 'vbool129_marginal' from UsesEqualDef factor
			this.vbool129_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool129_uses_B, this.vbool129_F, this.vbool129_marginal_B);
			// Message to 'vbool321' from AreEqual factor
			this.vbool321_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool59_uses_F[2], this.vbool129_uses_F[0]);
			// Message to 'vbool321_marginal' from ReplicateWithMarginal factor
			this.vbool321_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool321_uses_B, this.vbool321_F, this.vbool321_marginal_B);
			// Message to 'vbool129_uses' from UsesEqualDef factor
			this.vbool129_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool129_uses_B, this.vbool129_F, 1, this.vbool129_uses_F[1]);
			// Message to 'vbool137_uses' from AreEqual factor
			this.vbool137_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool353_B, this.vbool129_uses_F[1]);
			// Message to 'vbool137_marginal' from UsesEqualDef factor
			this.vbool137_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool137_uses_B, this.vbool137_F, this.vbool137_marginal_B);
			// Message to 'vbool353' from AreEqual factor
			this.vbool353_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool137_uses_F[0], this.vbool129_uses_F[1]);
			// Message to 'vbool353_marginal' from ReplicateWithMarginal factor
			this.vbool353_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool353_uses_B, this.vbool353_F, this.vbool353_marginal_B);
			// Message to 'vbool137_uses' from UsesEqualDef factor
			this.vbool137_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool137_uses_B, this.vbool137_F, 1, this.vbool137_uses_F[1]);
			// Message to 'vbool121_uses' from AreEqual factor
			this.vbool121_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool345_B, this.vbool137_uses_F[1]);
			// Message to 'vbool121_marginal' from UsesEqualDef factor
			this.vbool121_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool121_uses_B, this.vbool121_F, this.vbool121_marginal_B);
			// Message to 'vbool345' from AreEqual factor
			this.vbool345_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool137_uses_F[1], this.vbool121_uses_F[0]);
			// Message to 'vbool345_marginal' from ReplicateWithMarginal factor
			this.vbool345_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool345_uses_B, this.vbool345_F, this.vbool345_marginal_B);
			// Message to 'vbool137_uses' from UsesEqualDef factor
			this.vbool137_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool137_uses_B, this.vbool137_F, 2, this.vbool137_uses_F[2]);
			// Message to 'vbool25_uses' from AreEqual factor
			this.vbool25_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool361_B, this.vbool137_uses_F[2]);
			// Message to 'vbool25_marginal' from UsesEqualDef factor
			this.vbool25_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool25_uses_B, this.vbool25_F, this.vbool25_marginal_B);
			// Message to 'vbool361' from AreEqual factor
			this.vbool361_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool137_uses_F[2], this.vbool25_uses_F[0]);
			// Message to 'vbool361_marginal' from ReplicateWithMarginal factor
			this.vbool361_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool361_uses_B, this.vbool361_F, this.vbool361_marginal_B);
			// Message to 'vbool121_uses' from UsesEqualDef factor
			this.vbool121_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool121_uses_B, this.vbool121_F, 1, this.vbool121_uses_F[1]);
			// Message to 'vbool98_uses' from AreEqual factor
			this.vbool98_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool337_B, this.vbool121_uses_F[1]);
			// Message to 'vbool98_marginal' from UsesEqualDef factor
			this.vbool98_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool98_uses_B, this.vbool98_F, this.vbool98_marginal_B);
			// Message to 'vbool337' from AreEqual factor
			this.vbool337_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool98_uses_F[0], this.vbool121_uses_F[1]);
			// Message to 'vbool337_marginal' from ReplicateWithMarginal factor
			this.vbool337_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool337_uses_B, this.vbool337_F, this.vbool337_marginal_B);
			// Message to 'vbool25_uses' from UsesEqualDef factor
			this.vbool25_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool25_uses_B, this.vbool25_F, 1, this.vbool25_uses_F[1]);
			// Message to 'vbool33_uses' from AreEqual factor
			this.vbool33_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool297_B, this.vbool25_uses_F[1]);
			// Message to 'vbool33_marginal' from UsesEqualDef factor
			this.vbool33_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool33_uses_B, this.vbool33_F, this.vbool33_marginal_B);
			// Message to 'vbool297' from AreEqual factor
			this.vbool297_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool33_uses_F[0], this.vbool25_uses_F[1]);
			// Message to 'vbool297_marginal' from ReplicateWithMarginal factor
			this.vbool297_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool297_uses_B, this.vbool297_F, this.vbool297_marginal_B);
			// Message to 'vbool98_uses' from UsesEqualDef factor
			this.vbool98_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool98_uses_B, this.vbool98_F, 1, this.vbool98_uses_F[1]);
			// Message to 'vbool176_uses' from AreEqual factor
			this.vbool176_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool459_B, this.vbool98_uses_F[1]);
			// Message to 'vbool176_marginal' from UsesEqualDef factor
			this.vbool176_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool176_uses_B, this.vbool176_F, this.vbool176_marginal_B);
			// Message to 'vbool459' from AreEqual factor
			this.vbool459_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool98_uses_F[1], this.vbool176_uses_F[1]);
			// Message to 'vbool459_marginal' from ReplicateWithMarginal factor
			this.vbool459_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool459_uses_B, this.vbool459_F, this.vbool459_marginal_B);
			// Message to 'vbool176_uses' from UsesEqualDef factor
			this.vbool176_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool176_uses_B, this.vbool176_F, 0, this.vbool176_uses_F[0]);
			// Message to 'vbool168_uses' from AreEqual factor
			this.vbool168_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool434_B, this.vbool176_uses_F[0]);
			// Message to 'vbool168_marginal' from UsesEqualDef factor
			this.vbool168_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool168_uses_B, this.vbool168_F, this.vbool168_marginal_B);
			// Message to 'vbool434' from AreEqual factor
			this.vbool434_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool176_uses_F[0], this.vbool168_uses_F[1]);
			// Message to 'vbool434_marginal' from ReplicateWithMarginal factor
			this.vbool434_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool434_uses_B, this.vbool434_F, this.vbool434_marginal_B);
			// Message to 'vbool168_uses' from UsesEqualDef factor
			this.vbool168_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool168_uses_B, this.vbool168_F, 0, this.vbool168_uses_F[0]);
			// Message to 'vbool150_uses' from AreEqual factor
			this.vbool150_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool426_B, this.vbool168_uses_F[0]);
			// Message to 'vbool150_marginal' from UsesEqualDef factor
			this.vbool150_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool150_uses_B, this.vbool150_F, this.vbool150_marginal_B);
			// Message to 'vbool426' from AreEqual factor
			this.vbool426_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool150_uses_F[1], this.vbool168_uses_F[0]);
			// Message to 'vbool426_marginal' from ReplicateWithMarginal factor
			this.vbool426_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool426_uses_B, this.vbool426_F, this.vbool426_marginal_B);
			// Message to 'vbool150_uses' from UsesEqualDef factor
			this.vbool150_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool150_uses_B, this.vbool150_F, 0, this.vbool150_uses_F[0]);
			// Message to 'vbool85_uses' from AreEqual factor
			this.vbool85_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool460_B, this.vbool150_uses_F[0]);
			// Message to 'vbool85_marginal' from UsesEqualDef factor
			this.vbool85_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool85_uses_B, this.vbool85_F, this.vbool85_marginal_B);
			// Message to 'vbool460' from AreEqual factor
			this.vbool460_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool85_uses_F[1], this.vbool150_uses_F[0]);
			// Message to 'vbool460_marginal' from ReplicateWithMarginal factor
			this.vbool460_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool460_uses_B, this.vbool460_F, this.vbool460_marginal_B);
			// Message to 'vbool85_uses' from UsesEqualDef factor
			this.vbool85_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool85_uses_B, this.vbool85_F, 0, this.vbool85_uses_F[0]);
			// Message to 'vbool77_uses' from AreEqual factor
			this.vbool77_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool329_B, this.vbool85_uses_F[0]);
			// Message to 'vbool77_marginal' from UsesEqualDef factor
			this.vbool77_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool77_uses_B, this.vbool77_F, this.vbool77_marginal_B);
			// Message to 'vbool329' from AreEqual factor
			this.vbool329_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool85_uses_F[0], this.vbool77_uses_F[1]);
			// Message to 'vbool329_marginal' from ReplicateWithMarginal factor
			this.vbool329_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool329_uses_B, this.vbool329_F, this.vbool329_marginal_B);
			// Message to 'vbool77_uses' from UsesEqualDef factor
			this.vbool77_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool77_uses_B, this.vbool77_F, 0, this.vbool77_uses_F[0]);
			// Message to 'vbool59_uses' from AreEqual factor
			this.vbool59_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool313_B, this.vbool77_uses_F[0]);
			// Message to 'vbool59_marginal' from UsesEqualDef factor
			this.vbool59_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool59_uses_B, this.vbool59_F, this.vbool59_marginal_B);
			// Message to 'vbool313' from AreEqual factor
			this.vbool313_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool59_uses_F[1], this.vbool77_uses_F[0]);
			// Message to 'vbool313_marginal' from ReplicateWithMarginal factor
			this.vbool313_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool313_uses_B, this.vbool313_F, this.vbool313_marginal_B);
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool51' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool51Marginal()
		{
			return this.vbool51_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool305' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool305Marginal()
		{
			return this.vbool305_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool7' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool7Marginal()
		{
			return this.vbool7_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool289' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool289Marginal()
		{
			return this.vbool289_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool129' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool129Marginal()
		{
			return this.vbool129_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool321' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool321Marginal()
		{
			return this.vbool321_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool137' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool137Marginal()
		{
			return this.vbool137_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool353' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool353Marginal()
		{
			return this.vbool353_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool121' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool121Marginal()
		{
			return this.vbool121_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool345' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool345Marginal()
		{
			return this.vbool345_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool25' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool25Marginal()
		{
			return this.vbool25_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool361' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool361Marginal()
		{
			return this.vbool361_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool98' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool98Marginal()
		{
			return this.vbool98_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool337' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool337Marginal()
		{
			return this.vbool337_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool33' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool33Marginal()
		{
			return this.vbool33_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool297' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool297Marginal()
		{
			return this.vbool297_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool176' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool176Marginal()
		{
			return this.vbool176_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool459' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool459Marginal()
		{
			return this.vbool459_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool168' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool168Marginal()
		{
			return this.vbool168_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool434' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool434Marginal()
		{
			return this.vbool434_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool150' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool150Marginal()
		{
			return this.vbool150_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool426' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool426Marginal()
		{
			return this.vbool426_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool85' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool85Marginal()
		{
			return this.vbool85_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool460' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool460Marginal()
		{
			return this.vbool460_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool77' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool77Marginal()
		{
			return this.vbool77_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool329' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool329Marginal()
		{
			return this.vbool329_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool59' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool59Marginal()
		{
			return this.vbool59_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool313' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool313Marginal()
		{
			return this.vbool313_marginal_B;
		}

		#endregion

	}

}
